In computer systems employing a visual display device and a keyboard there is usually a moveable marker on the screen of the visual display device known as a cursor, which denotes the location which the next action taken by the keyboard will affect. For example, in word processing applications the cursor position on the visual display device usually denotes the location at which the next symbol generated by the keyboard will be entered into the document. However, while the cursor is currently associated with a symbol which has previously been keyed, the keyboard selection of a "delete" function will remove the character then associated with the cursor.
In virtually all prior art keyboard/display applications, whether used in a nonintelligent terminal environment or in a standalone, high performance computer application, the keyboard has included a plurality of keys which are used to move the position on the visual display, without otherwise affecting the displayed information. These keys, known as cursor motion keys, were sometimes dedicated only to this function, while in other systems, were used as cursor motion keys only while another key was depressed or toggled to shift the function of these keys from another function such as numeric keys or character keys to the cursor motion function.
Cursor motion keys have typically moved the cursor position in increments on the visual display device. These key have typically moved the cursor one character position to the left or right for each short depression of the horizontal motion keys and one line position up or down for each short depression of the vertical cursor motion keys. In many systems a longer depression of a cursor motion key results in repetitive, but incremental movement of the cursor position on the visual display device.
Many computer programs used in conjunction with keyboards and visual display devices provide additional flexibility with the use of cursor motion keys. More specifically, these programs have provided greater direct incremental movements of the cursor position than the previous movements of single character positions or a rapid succession of single character movements. For example, word processing programs have provided the capability to advance the cursor from any position along a horizontal line of text to either the beginning of that line or the end of that line by depression of an additional control key before the cursor motion key is depressed. Similarly, some word processing programs have provided for cursor movements by word, by paragraph, or by page in a similar manner. In each of these cases, the cursor movement was from an undefined location to a logically finite point. It has not been known to use cursor motion keys to move the cursor from such an unknown location to another random location in a direct movement. For such a movement to the second, random location, it has been necessary when using cursor motion keys to increment the cursor in one coordinate direction until that coordinate of the random point has been reached and then increment the cursor in the other coordinate direction until the second coordinate of the random location of the cursor has been reached.
In addition to the cursor motion keys there exists a class of pointing devices which let one move a pointer on the visual display device in a rapid, direct manner, rather than by incremental movements. One example of this class of devices has come to be commonly referred to as a "mouse". These devices have come to be used to allow an operator to rapidly point to an operation, command, function, or option named on the display which is desired to be selected by the clicking of a button associated with the pointing device. This pointing device has also been used with the button associated therewith to rapidly move a pointer from the beginning to the end of a block of data to be marked for further processing, such as moving the data, copying the data, or deleting the data. Additionally, the pointer has been used in the prior art to rapidly change the position of a cursor by a direct movement, rather than the incremental movement of the cursor motion keys.
For the purposes of simplifying the remaining description of this invention, the mouse will be used as the example of the above described class of pointing devices, although those skilled in the art will recognize that this invention is also applicable to the display of pointers controlled by other pointing devices such as, but not limited to, joysticks, tablets, and light pens.
When a mouse and the visual pointer associated therewith are included in a data processing system, it has been a common practice to maintain the simultaneous displaying of both the cursor, which is normally moved with the cursor motion keys, and the mouse pointer. When used in conjunction with an application such as a word processing program, the cursor controlled by the cursor motion keys always denotes the position at which the next editing operation (including the insertion and deletion of characters and controls) occurs. The mouse pointer has been used to mark blocks of text, to rapidly reposition the cursor, and to point to displayed commands for selection.
A problem arises, when using a system in which a mouse pointer is included in addition to the traditional cursor, regarding the manner of displaying the additional mouse pointer on the display during keyboard operations. Specifically, the question presented is what should happen to the mouse pointer during keyboarding? If it is desirable to leave the mouse pointer on the visual display screen most of the time, it must be taken away at least during input of each character, because a new character being inputted may need to be placed on the screen in the same position as is being currently occupied by the mouse pointer. If the desire is to leave it on the screen but have it removed during the actual keying process, then it must be redisplayed when keying ceases. This presents a number of problems. First, it is visually distracting to the operator to see the flickering that occurs between the keying of each character as the mouse pointer is removed upon detection of the keystroke and then redisplayed as soon as the keyed character is displayed. Second, the requirement to immediately redisplay the mouse pointer after the display of each keyed character results in a severe performance requirement for the hardware and software.
Because of the above problems the most common solution has been to permanently remove the mouse pointer at the first keystroke until the mouse, itself, is moved. This, however, causes additional problems. First, when it is desired to again use the mouse while it is currently hidden from view, it might be found that the mouse is presently positioned exactly where the operator wants it. However, the operator does not know that because the mouse pointer has been hidden and to see the mouse pointer position, the mouse must first be moved which, of course, moves the mouse pointer away form the desired position. Another problem is that of having the operator see the mouse pointer disappear at the first keystroke which leaves the impression that something wrong has happened to the system. The operator may not know why the mouse pointer disappeared and may begin trying various corrective action, only to again be startled to see the mouse pointer reappear at the first movement of the mouse, itself.
In view of the above, in systems that use both cursor motion keys to direct movement of a cursor on a visual display and a mouse to allow rapid, direct movements of a mouse pointer, it would be highly desirable to allow the operator to periodically be conscious of the mouse pointer position without the flickering or performance impact inherent with techniques which immediately redisplay the mouse pointer after each keystroke.